package com.learn.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import org.springframework.web.servlet.mvc.LastModified;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 《Spring源码尝试解析》11.4.5 缓存处理 P332
 *  Spring 提供的对 Last-Modified 机制的支持，只需要实现 LastModified 接口。
 *  CSDN示例：https://blog.csdn.net/iwts_24/article/details/84575045
 *           https://www.jianshu.com/p/a7161145ce5b
 */
public class HelloWorldLastModifiedCacheController extends AbstractController implements LastModified {
	private long lastModified;
	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
		// 点击后再次点击当前页面
		response.getWriter().write("<a href=''>this</a>");
		return null;
	}

	@Override
	public long getLastModified(HttpServletRequest request) {
		if(lastModified == 0L){
			// 第一次或者逻辑有变化的时候，应该重新返回内容最新修改的时间戳
			lastModified = System.currentTimeMillis();
		}
		return lastModified;
	}
}
